1. Field of the Invention
The invention relates generally to a software build tool and, more particularly, to a make utility functioning in conjunction with a makefile.
2. Description of the Related Art
Generally, businesses that develop software follow a definite method. The program is first written in some human-readable source code. This source code is then processed by various programs to produce an executable, which a computer can run. These processing programs generally produce intermediate files, as well as the final executable. The executable is then tested and, based on the results of this test, the original code is then modified. This cycle continues until no more modification is required.
For all but the smallest programs, the source code is broken up into several pieces, called files. Usually, these files fall into two categories: source files and header files. Header files contain information that the processing tools use to ensure that intermediate files can be properly merged into the final executable. The source files are processed in parallel. Source files contain the actual source code that the processing programs use, which forms the bulk of the intermediate files. Generally, one of each type of intermediate file is generated per source file.
Source files are quasi-independent, and can often be modified independently of other source files, or in limited combination. However, each change in a piece of code typically requires some amount of reprocessing and retesting. A build tool, usually a computer program such as Make or GNUMake, is often used to control the processing of these source files. These build programs generally automate the series of commands used to process the source files and also determine if a file requires reprocessing at all. This is usually done under the control of one or more configuration/program files, called “Makefiles.” Makefiles describe how and when various targets must be updated or “built.” Targets are built by executing a series of commands contained in the makefile. A “target” is the basic object in a makefile. Most targets correspond to files. Many targets have dependencies, which are targets that cause the original target to be built if the dependencies are updated or have been modified.
Generally, the history of a file—what it was at various points during the development cycle—is of use primarily if something is broken. Also, there are usually two types of changes in the software code: bug fixes and feature enhancements/additions.
However, software designed to test some other software or function is developed differently. In addition to bug fixes and feature enhancements/additions, another type of change is the creation of an entirely new test. A new test may be created through the change of as little as one character in the source code. Merely copying the source code and making the change to create the new test is unacceptable, because any bug fixes or changes subsequently made to the original source code will need to be propagated to the new file, as well. Therefore, what is needed is a method to create multiple intermediate files, which can then be processed into multiple executable files, from a master source file so that any bug fixes or feature enhancements will only have to be made once.